<Profiler>
🧑🏻💻 Profiler
<Profiler>
를 사용하면 프로그램적으로 React 트리의 렌더링 성능을 측정할 수 있다.
✅ Profiler 문법
<Profiler id="App" onRender={onRender}>
<App />
</Profiler>
- 컴포넌트 트리를
<Profiler>
로 감싸서 렌더링 성능을 측정한다. id
는 측정 중인 UI 부분을 식별하는 문자열이다.onRender
는 프로파일링된 트리 내의 컴포넌트가 업데이트될 때마다 React가 호출하는 콜백이다.
🧑🏻💻 알고 가기
✅ onRender
콜백
function onRender(id, phase, actualDuration, baseDuration, startTime, commitTime) {
// 렌더링 타이밍을 집계하거나 로그를 남긴다.
}
- React는 렌더링된 내용에 대한 정보와 함께
onRender
콜백을 호출한다. onRender
콜백은 렌더링된 내용과 소요된 시간에 대한 정보를 담는다.
✏️ 측정할 수 있는 정보들
id | <Profiler> 트리의 id 문자열 prop |
---|---|
phase | 트리가 마운트 되었거나, props, state에 변화로 인한 리 렌더링 확인 |
actualDuration | 현재 업데이트에 대해 걸린 시간 (밀리초) |
baseDuration | 최적화 없이 리렌더링에 걸리는 시간 (밀리초) |
startTime | 현재 업데이트를 시작한 시점에 대한 숫자 타임 스탬프 |
endTime | 업데이트를 완료한 시점의 타임 스탬프 |
✅ 사용 꿀팁
- 프로파일링은 약간의 오버헤드를 추가하므로 상용 빌드에서는 기본적으로 비활성화되어 있다.
<Profiler>
를 사용하면 프로그램적으로 측정값을 수집한다. 만약 대화형 프로파일러를 찾고 있다면 React 개발자 도구의 프로파일러 탭을 사용하자.- 사용할 때마다 애플리케이션에 약간의 CPU 및 메모리 오버헤드가 추가되기 때문에 필요한 경우에만 사용하자.
🧑🏻💻 활용 및 생각할 거리
✅ CRA 환경에서 profiling build하기
yarn build --profile
npm run build -- --profile